package com.howlaisi.devops.scm

// 使用jenkins的checkout插件，注意此处用了扩展选项
def checkout(gitUrl, branchName, credentialsId) {
    println("仓库： ${gitUrl}")
    println("分支： ${branchName}")
    checkout([
        $class: 'GitSCM',
        branches: [[name: "${branchName}"]],
        extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]],
        userRemoteConfigs: [[credentialsId: "$credentialsId", url: "$gitUrl"]]])
    // chechout后，马上获取commit信息
    // 定义全局变量
    env.COMMIT_USER = commitEnv.getCommitUser() // 提交者
    env.COMMIT_ID   = commitEnv.getCommitId() // 提交ID
    env.COMMIT_TIME = commitEnv.getCommitTime() // 提交时间
    env.COMMIT_INFO = commitEnv.getCommitInfo() // 提交信息

    // 背景：docker里面，已经是配置了本地的harbor的insecure-registries,registry-mirrors
    //直接在虚拟机上面docker pull openjdk:8-jdk && docker pull nginx是能够拉下来的，但是在Dockerfile中写FROM openjdk:8-jdk，他就拉不下来，报的错就是说要https的方式
    println("提前pull镜像：docker pull openjdk:8-jdk && docker pull nginx")
    sh "docker pull openjdk:8-jdk && docker pull nginx"
}

// 使用jenkins的git插件
def clone(gitUrl, branchName, credentialsId) {
    println("仓库： ${gitUrl}")
    println("分支： ${branchName}")
    git(url: "$gitUrl", credentialsId: "$credentialsId", branch: "$branchName", changelog: true, poll: true)
}

// 选择分支，以triggerBranchName为准，如果没有就选择paramBranchName
def chooseBranchName() {
    try {
        println("计算分支...")
        println("PARAM_BRANCH_NAME是: $PARAM_BRANCH_NAME")
        env.BRANCH_NAME = PARAM_BRANCH_NAME
        println("TRIGGER_BRANCH_NAME是： $TRIGGER_BRANCH_NAME")
        env.BRANCH_NAME = TRIGGER_BRANCH_NAME
    } catch (error) {
        println("捕获到了异常：")
        println("继续往下执行。。。" + error)
    } finally{
        println("BRANCH_NAME是： $BRANCH_NAME")
    }
}
